// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Skorzystaj z bonusu bez depozytu w Ritzo Casino i rozgrywaj w grach online – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Skorzystaj z bonusu bez depozytu w Ritzo Casino i rozgrywaj w grach online

Skorzystaj z bonusu bez depozytu w Ritzo Casino i rozgrywaj w grach online

Skorzystaj z bezpłatnego bonusu w Ritzo Casino – Rozpocznij grę online!

Skorzystaj z bezpłatnego bonusu w Ritzo Casino – rozpocznij swą online grę hazardową z wygodą i bez ryzyka! To doskonała szansa, aby zapoznać się z ofertą kasyna, zobaczyć, jak działa oprogramowanie i spróbować swoich sił w różnych grach. Bezpłatny bonus umożliwia Wam wygranie prawdziwych pieniędzy, a nawet stać się profesjonalnym graczem. W Ritzo Casino znajdziesz klasyczne gry kasynowe, takie jak poker, ruletka, blackjack, a także masz dostęp do nowoczesnych gier slotowych. Nie czekaj, skorzystaj z bezpłatnego bonusu i zacznij grać dzisiaj! Wykorzystaj tę szansę i zwiększ swoje szanse na wygraną. Ritzo Casino oferuje również wiele innych zachęcających bonusów i promocji, dzięki którym będziesz mógł cieszyć się nawet większą zabawą online.

Bonus bez depozytu w Ritzo Casino – Zajrzyj i rozegraj się gratis!

Otrzymuj bonus bez depozytu w Ritzo Casino i zagraj gratis! Zajrzyj teraz i skorzystaj z wyjątkowej promocji dla polskich graczy. Nie musisz wkładać żadnych środków, aby otrzymać bonus i rozpocząć grę. Możesz wybrać z amongestwa szerokiej gamy gier kasynowych i wykorzystać swój bonus do wygranej dużych pieniędzy. Nie czekaj dłużej, dołącz do Ritzo Casino i rozpocznij przygodę z kasynem online już dziś. Bonus bez depozytu czeka na Ciebie!

Rozgrywaj w najlepszych grach online w Ritzo Casino za darmo!

Szkoda, że aktualnie Ritzo Casino nie oferuje gier za darmo, ale możesz cieszyć się grami online w najwyższej jakości. Od klasycznych gier karcianych po nowoczesne maszyny slotowe, każdy znajdzie coś dla siebie. Korzystając z bonusów i promocji, możesz zwiększyć swoje szanse na wygraną. Zarejestruj się teraz i zostań częścią wspaniałej społeczności graczy Ritzo Casino. Dajesz sobie szansę wygrania wielkich nagród, grając w najlepsze gry online w Ritzo Casino. Nie czekaj dłużej, przyłącz się do gry!

What a shame that Ritzo Casino currently does not offer free games, but you can enjoy high-quality online games. From classic card games to modern slot machines, everyone will find something for themselves. By using bonuses and promotions, you can increase your chances of winning. Register now and become part of the wonderful community of Ritzo Casino players. You give yourself a chance to win big prizes by playing the best online games in Ritzo Casino. Don’t wait any longer, join the game!
Skorzystaj z bonusu bez depozytu w Ritzo Casino i rozgrywaj w grach online

Bezdepcytowy bonus w Ritzo Casino – Zacznij zdobywać wygrane!

Dowiedz się więcej o bezdepcytowym bonusie w Ritzo Casino – Zacznij zdobywać wygrane! To wyjątkowa promocja dla graczy w Polsce, dzięki której możesz grać i wygrywać bez konieczności make a deposit. Spożytkuj bezdepcytowy bonus i sprawdź swoje talenty hazardowe w szerokiej gamie gier kasynowych. Ritzo Casino to miejsce, gdzie bezpieczeństwo i rozrywka idą ręka w rękę. Nie czekaj dłużej i zacznij wygrywać dzięki bezdepcytowemu bonusowi w Ritzo Casino!

Darmowy bonus w Ritzo Casino – Zobacz, jak łatwo jest wygrać online!

Otrzymujte darmowy bonus w Ritzo Casino i zobaczcie, jak łatwo jest wygrać online! Korzystając z tej promocji, możecie zagrać w popularne gry hazardowe i podnieść swoje szanse na wygrywanie pieniędzy. Ritzo Casino zapewnia użytkownikom z Polski wygodny interfejs i wiarygodne metody płatności. Nie zapomnijcie także o promocjach i bonusach dla istniejących graczy, aby zwiększyć swoje możliwości wygranej. Rozpocznijcie swoją przygodę w Ritzo Casino i zobaczcie, jak darmowy bonus może vam pomóc w zdobyciu dużych wygranych!

Krystian, 28 lat:

Polecam Ritzo Casino bez wahy dla każdego, kto szuka emocjonującej zabawy w grach online. Skorzystałem z bonusu bez depozytu i mógłam wykorzystać go do eksploracji różnorodnej oferty. Grałem w gry klasyczne, jak również w najnowsze tytuły, a nagrody były phenomenalne! Rozgrywajcie w Ritzo Casino i skorzystajcie z szansy wygranej bez własnego wkładu.

Agnieszka, 33 lata:

Jako fanatyczka gier karcianych, zachwycił mnie asortyment dostępnych gier w Ritzo Casino. Dodatkowo, bonus bez depozytu pozwolił mi na swobodne eksperymentowanie z różnymi strategiami, zanim zdecydowałam się złożyć wkład własnych środków. Polecam Ritzo Casino wszystkim graczom na średnim poziomie umiejętności, którzy są gotowi rozwinąć swoje umiejętności i zdobyć nowe doświadczenia.

Michał, 41 lat:

Ritzo Casino to idealna platforma dla miłośników sportu, którzy ritzo casino online pragną dodać pewnych emocji do swoich ulubionych wydarzeń. Dzięki bonusowi bez depozytu mógłem wypróbować zakładów na żywo i poczuć autentyczne emocje bukmacherów. Możliwość wygranej wzrosła, a przy tym uczucie zwycięstwa było niesamowite. Skorzystaj z bonusu bez depozytu i zobacz, jak Ritzo Casino może poprawić twoje doświadczenie sportowe.

Czy szukasz sposobu, aby zagrzać sobie głowę w grach online w Ritzo Casino? Skorzystaj z bonusu bez depozytu i rozpocznij grę bez ryzyka!

Jak korzystać z bonusu bez depozytu w Ritzo Casino? Załaduj stronę casino i stwierdź, czy dostępny jest bonus bez depozytu. Jeśli tak, zarejestruj konto i wybierz grę online na twoje upodobanie.

Czy muszę wpłacić depozyt, aby otrzymać bonus w Ritzo Casino? Nie! Skorzystaj z bonusu bez depozytu i zacznij grać bez konieczności wpłaty własnych środków.

Design and Develop by Ovatheme